
import java.util.*;

public class GameRoom {
    // 1、准备54张牌给房间使用，定义集合存储54张牌
    private List<Card> allCards = new ArrayList<>();
// 构造方法
{   // 2、初始化点数和花色
    String[] sizes = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
    String[] colors = { "♠", "♥", "♣", "♦" };
    // 3、组合点数和花色，生成54张牌
    for ( String size : sizes ) {
        for ( String color : colors ) {
            Card card = new Card(size, color);
            allCards.add(card);
        }
    }
    allCards.add(new Card("", "大王"));
    allCards.add(new Card("", "小王"));
    // System.out.println(allCards);
}

    // 启动方法
    public void start(){
        // 打乱
        Collections.shuffle(allCards);
        System.out.println(allCards);
        // 创建3个玩家，A=[],B=[],C=[]，键值对格式，值是一个数组，可以使用map存储，值为List
        Map<String,List<Card>> players = new HashMap<>();

        // 创建每个玩家的牌堆
        List<Card> playerOne = new ArrayList<>();
        players.put("一号玩家",playerOne);

        List<Card> playerTwo = new ArrayList<>();
        players.put("二号玩家",playerTwo);

        List<Card> playerThree = new ArrayList<>();
        players.put("三号玩家",playerThree);

        // 发牌，注意规则要求只发出51张牌，最后3张留作底牌。
        // 模拟现实发牌，3个玩家轮流给一张牌。
        for (int i = 0; i < allCards.size()-3; i++) {
            Card card = allCards.get(i);
            if (i % 3 == 0) {
                playerOne.add(card);
            } else if (i % 3 == 1) {
                playerTwo.add(card);
            } else {
                playerThree.add(card);
            }
        }

        // 三张底牌发牌。sublist截取
        List<Card> lastCards = allCards.subList(allCards.size()-3, allCards.size());
        // 模拟抢地主派发全部底牌。
        playerOne.addAll(lastCards);

        // 对发给玩家的牌堆排序。
        Collections.sort(playerOne);


        // 展示每个玩家和手牌
        for (Map.Entry<String, List<Card>> entry : players.entrySet()) {
            String playerName = entry.getKey();
            List<Card> playerCards = entry.getValue();
            System.out.println(playerName + ": " + playerCards);
        }
    }
}
